/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tutorial.BuilderSiDAO.commons;

/**
 * asa ar arata implementarea pentru Builder
 * dupa cum se vede Builder ascunde detaliile de implementare si instantiere a class
 * si le delega la o clasa separata.
 * 
 * Denumirea de Builder se refera la modul de intantare a obiectului
 * adica o alta clasa este responsabila pentru instantarea unui obiect,
 * dar in cazu acesta un Builder este resonsabil pentru instantare(interfata Importer) si altul pentru
 * exportul datelor(interfata Exporter) (de unde ia datele de instanare si unde le exporta nu este important acum)
 * @author Boogie
 */
public class ptBuilderPersoana extends Persoana{
    
    //o interfata ii o class care nu contine decat definitile metodelor sale 
    //publice si atat
    
    //aste ii pentru a creea persoana    
    public interface Importer{
        String importNume();
        String importPrenume();
        String importAdresa();
        //in caz ca ii fisier sa ceva ce trebuie deschis si inchis
        void open();
        void close();
    }
    
    //asta ii pentru export
    public interface Exporter{
        void exportNume(String nume);
        void exportPrenume(String prenume);
        void exportAdresa(String adresa);
    }

    public ptBuilderPersoana(Importer builder) {
        builder.open();
        this.adresa=builder.importAdresa();
        this.nume = builder.importNume();
        this.prenume = builder.importPrenume();
        builder.close();
    }
    public void export(Exporter builder){
        builder.exportAdresa(this.adresa);
        builder.exportNume(this.nume);
        builder.exportPrenume(this.prenume);
    }
    
    
}
